import MembershipService from '../../../dataservice/MembershopService'
const membershipService = new MembershipService()
import UserService from '../../../dataservice/UserService'
const userService = new UserService()
import LevelService from '../../../dataservice/LevelService'
const levelService = new LevelService()
Page({
  data: {
    inited: false, //页面数据加载完 再显示,防止乱屏
    showPaySuccess: false, //显示支付成功
    showPayFaild: false, //显示支付失败
    membershipPlans: [], // 所有套餐类型数据
    selectedId: 1, // 当前默认选择的套餐类型的id
    discount: 0, // 用户等级享受到的购买套餐的积分折扣(查询lavel&user表)(用户等级折扣价格)
    myLevel: {}, // 用户当前的等级
    myInfo: {}, // 用户信息
    // (price优惠前-discount折扣价格就是最后支付的价格)
    price: 0 //套餐的优惠前价
  },
  onLoad: function (options) {
    // 设置会员套餐类型并展示
    this.setMembershipPlan()
    // 设置用户信息
    this.setUserData()
  },
  // 查询所有的vip会员套餐,设置会员套餐类型并展示
  setMembershipPlan() {
    membershipService.membershipPlansData(membershipPlansData => {
      this.setData({
        membershipPlans: membershipPlansData
      })
    })
  },
  // 设置用户信息
  setUserData() {
    // 获取所有用户级别和权限
    levelService.getLevelist(levellist => {
      userService.getUserInfo(userInfo => {
        let mylevel = levellist.filter(item => userInfo.growthValue >= item.minGrowthValue && userInfo.growthValue <= item.maxGrowthValue)[0]
        this.setData({
          myLevel: mylevel,
          myInfo: userInfo
        })
        // 设置用户等级对应的积分折扣
        if (mylevel.bonus.length === 3) {
          this.setData({
            discount: mylevel.bonus[2].discount,
            // 数据加载完显示界面
            inited: true
          })
        }
      })
    })
  },
  /**
   * 用户选择套餐类型时触发的事件
   * 在此事件中设置 selected的值为用户选择的套餐的id值
   */
  onPlanItemClick(e) {
    let id = e.currentTarget.dataset.item.id
    let price = e.currentTarget.dataset.item.price
    // 如果和原来id不相等再执行(if语句简写方式不写括号)
    if (this.data.selectedId != id)
      this.setData({
        selectedId: id,
        price: price
      })
  },
  /**
   * 点击“立即支付”按钮触发的事件
   * 在此事件中，实现会员套餐的购买
   * 不要在小程序端直接向user_membership表中插入记录
   * 开发时一旦涉及到财务问题，绝对不能信任客户端，因为在数据的传入过程中，可能会被劫持修改
   */
  onPayButtonClick() {
    // 判断用户当前积分是否足够购买当前选择的套餐
    if (this.data.myInfo.point < this.data.price - this.data.discount) {
      wx.showModal({
        title: '提示',
        content: '抱歉，您的积分不足，无法购买'
      })
    } else {
      wx.showModal({
        title: '会员支付',
        content: '即将支付p' + (this.data.price - this.data.discount),
        success: res => {
          if (res.confirm) {
            wx.cloud.callFunction({
                name: 'payMembership',
                data: {
                  // 将当前选择的套餐id传过去
                  membershipPlanId: this.data.selectedId
                }
              })
              .then(res => {
                console.log(res)
                // 如果data为true表示购买成功
                if (res.result.data) {
                  // 支付成功
                  this.setData({
                    showPaySuccess: true
                  })
                } else if (res.result.errMsg === "point no enough") {
                  wx.showModal({
                    content: '抱歉，您的积分不足，无法购买',
                    showCancel: false
                  })
                } else {
                  // 支付失败
                  this.setData({
                    showPayFaild: true
                  })
                }


              })
              .catch(err => {

              })
          }
        }
      })
    }
  },
 
})